A design verification system may utilize simulation-based techniques to perform functional verification of a hardware design. The simulation-based techniques may include generating stimuli, for example, in the form of test cases, to trigger architecture and/or micro-architecture events defined by a verification plan.
A test generator may be used to generate test cases based, for example, on the verification plan, which may be provided to the test generator as an input specification of a test template including a set of constrains representing, for example, validity, quality, and/or test specification requirements. For example, in relation to a translation table a validity constraint may require that RA=trans(EA), wherein EA denotes an effective address, and RA denotes a real (“physical”) address. A quality constraint relating to the translation table may require, for example, that a plurality of load and store instructions access the same cache line.
The test generator typically generates test cases by solving one or more constraint satisfaction problems (CSPs). The test generator may construct a CSP from user requirements and a system model, and produce a plurality of distinct program instances that satisfy the set of constraints. The quality constraints may be treated as soft-constraints, in the sense that the test generator tries to satisfy the quality constraints, e.g., as many of the quality constraints as possible according to a certain hierarchy, but a solution is still valid even if not all the quality constraints satisfied.
The general CSP problem is known to be Non-deterministic Polynomial (NP)-complete and, accordingly, the process of solving the CSP problem may be relatively slow.
The verification of some hardware designs may require the use of relatively long test cases, e.g., including a relatively large number of test case transactions.
A shorter verification process may be desired, e.g., in order to achieve a shorter time-to-market. The complexity of modern hardware designs may require the simulation of many different long and/or high-quality test cases. As a result, generating long test cases, e.g., of high quality and/or within a short time period is required.